﻿/*
 * Опредление базовых интерфейсов.
 * */
using System;
using System.Collections.Generic;
using System.Text;

namespace ctem.kernel
{
    //интерфейс "сущность обладает именем"
	public interface INameable
	{
	string GetName();
	}

    //интерфейс актора
    public interface IActor : INameable, GraphLib.IVertex,IDisposable
    {
        List<IPort> GetPorts();
        IPort GetPortByName(string name);
        List<IInPort> GetInPorts();
        IInPort GetInPortByName(string name);
        List<IOutPort> GetOutPorts();
        IOutPort GetOutPortByName(string name);
        List<IParam> GetParams();
        IParam GetParamByName(string name);
        
        /// <summary>
        /// данный метод вызывается при переинициализации актора
        /// </summary>
        void ReInitialize();
        void Fire(double step);
        void TemporaryStop();
        void OnStopModelling();
        void OnOfflineModeSet(long offlineDuration);
        void OnOnlineModeSet();

        void GetWDenom(ref double[] denom);
    }

}
